package com.gengzp.mq.server.service;

import com.gengzp.mq.server.model.generic.MqPaginationResult;
import com.gengzp.mq.server.model.message.req.*;
import com.gengzp.mq.server.model.message.resp.MqPageMessageResp;
import com.gengzp.mq.server.model.message.resp.MqReceiveMessageResp;

/**
 * @ClassName MqMessageService
 * @Description 消息管理服务层接口
 * @Author gengzp
 * @Date 2025/9/4 15:28
 */
public interface MqMessageService {

    /**
     * 发送消息
     *
     * @param req 发送消息请求实体
     * @return 消息id
     */
    String sendMessage(MqSendMessageReq req);

    /**
     * 接收消息
     *
     * @param req 接收消息请求实体
     * @return 接收到的消息
     */
    MqReceiveMessageResp receiveMessage(MqReceiveMessageReq req) throws Exception;

    /**
     * 确认消息
     *
     * @param req 确认消息请求实体
     */
    void ackMessage(MqAckMessageReq req);

    /**
     * 直接重发消息
     *
     * @param req 重发消息请求实体
     */
    void resendMessage(MqResendMessageReq req);

    /**
     * 分页查询消息
     *
     * @param req 分页查询消息请求实体
     * @return 分页查询结果
     */
    MqPaginationResult<MqPageMessageResp> pageQueryMessage(MqPageMessageReq req);

}
